/*
** ############################################################################
**     Project   : osdee - Operative Systems Design for Embedded Envrionments
**     File      : Gpt.h
**     Revision  ; 1.0
**     Abstract  :
**         GPT API declaration.
**     Processor : MC9S12XEP100CVL
**     Version   : Component 01.042, Driver 01.05, CPU db: 3.00.036
**     Datasheet : MC9S12XEP100 Rev. 1.19 12/2008
**
**     Copyright : 2014 Fernando Rodriguez, Open source with out any responsability.
**     
**     mail      : frr@gmail.com
** ############################################################################
*/

#ifndef _GPT_H_
#define _GPT_H_

#include "Gpt_Cfg.h"
#include "Os_TaskM.h"


/*
** ===================================================================
**     Function    :  Gpt_Init
**
**     Description :
**         Initializes the GPT module with an specified Configuration.
**     Parameter   : 
**         -tGPT_Configuration: Contains GPT Configuration, could also
**                              be NULL, in such case only general GPT 
**                              initialization is performed.
** ===================================================================
*/
void Gpt_Init(const tsGPT_Configuration* tGPT_Configuration);

/*
** ===================================================================
**     Function     :  Gpt_StartTimer
**
**     Description  :
**         Starts the GPT Channel with an specified Configuration.
**     Parameter    : 
**         -tChannel  : Channel atomic info. 
**                      Allows to define specific channel properties
**                      like Callback!.
**         -u32Period : Channel Period.
** ===================================================================
*/
void Gpt_StartTimer(tsPIT_Channel* tChannel, UINT32 u32Period);

/*
** ===================================================================
**     Function     :  Gpt_StartTimerById
**
**     Description  :
**         Starts the GPT Channel with an specified period.
**     Parameter    : 
**         -tChannelId : Channel id to be started.
**         -u32Period  : Channel Period.
** ===================================================================
*/
void Gpt_StartTimerById(tePIT_Channel_Id tChannelId, UINT32 u32Period);

/*
** ===================================================================
**     Function     :  Gpt_StopTimer
**
**     Description  :
**         Stops the GPT Channel.
**     Parameter    : 
**         -tChannelId : Channel id to be started.
** ===================================================================
*/
void Gpt_StopTimer(tePIT_Channel_Id tChannelId);

/*
** ===================================================================
**     Function     :  Gpt_EnableNotification
**
**     Description  :
**         Enables GPT Channel notifications (interrupts).
**     Parameter    : 
**         -tChannelId : Channel id to be started.
** ===================================================================
*/
void Gpt_EnableNotification(tePIT_Channel_Id tChannelId);

/*
** ===================================================================
**     Function     :  Gpt_DisableNotification
**
**     Description  :
**         Enables GPT Channel notifications (interrupts).
**     Parameter    : 
**         -tChannelId : Channel id to be started.
** ===================================================================
*/
void Gpt_DisableNotification(tePIT_Channel_Id tChannelId);
 
#endif /* _GPT_H_ */